/*
 * 文件名：UserDao.java
 * 版权：Copyright by www.wootide.com
 * 描述：
 * 修改人：ozm
 * 修改时间：2013-1-24
 * 跟踪单号：
 * 修改单号：
 * 修改内容：
 */
package com.wootide.cms.service.facility.room.roominfo.dao;

import java.util.List;

import com.wootide.cms.common.QueryCondition;
import com.wootide.cms.common.QueryResults;
import com.wootide.cms.service.facility.room.roominfo.pojo.RoomInfo;
import com.wootide.cms.service.facility.room.table.pojo.TableNoInfo;
/**
 * 预订方式数据访问曾接口层
 * 〈一句话功能简述〉
 * 〈功能详细描述〉
 * @author ozm
 * @version 2013-1-25
 * @see RoomInfoDao
 * @since 2013-1-25上午10:03:07
 */
public interface RoomInfoDao
{
    /**
     * Description: 通过房间ID获取房间信息<br>
     * Implement: <br>
     * @param consumablesId 房间ID
     * @return
     * @see
     * @return ConsumablesInfo 房间信息
     * @author wuliquan
     */
    RoomInfo findRoomInfoById(Integer roomId);
    
    /**
     * Description: 查询指定易耗品名的易耗品<br>
     * Implement: <br>
     * @param consumablesName 易耗品名字
     * @return
     * @see
     * @return int 符合条件的记录数
     * @author wuliquan
     */
    int findNumByRoomInfoNum(String roomNum);
    /**
     * 指定条件查询全部可预订房间
     * Description: <br>
     * Implement: <br>
     * @param queryConditon 查询条件
     * @return
     * @see
     * @return QueryResults 查询到的可预订房间信息
     * @author ozm2013-3-11下午3:31:04
     */
    QueryResults queryBookableRoomForPages(QueryCondition queryConditon);
    
    /**
     * 查询房间的可预订时段
     * Description: <br>
     * Implement: <br>
     * @param queryConditon查询条件
     * @return
     * @see
     * @return List结果
     * @author ozm2013-3-14下午5:20:50
     */
    @SuppressWarnings("rawtypes")
    List queryBookableRoomPeriods(QueryCondition queryConditon);
    
    /**
     * 
     * Description: 通过房间类型ID获取房间信息
     * Implement: <br>
     * @param queryConditon 房间 查询条件
     * @see
     * @return List 要获取的房间信息列表
     * @author ozm2013-1-30上午10:21:23
     */
    @SuppressWarnings("rawtypes")
    List findBookableRoomsByConditions(QueryCondition queryConditon);
    
    
    /**
     * 查询可预订桌次
     * Description: <br>
     * Implement: <br>
     * @param queryConditon查询条件
     * @return
     * @see
     * @return List结果
     * @author ozm2013-3-14下午5:20:50
     */
    @SuppressWarnings("rawtypes")
    List queryBookableTableNos(QueryCondition queryConditon);
    
    
    /**
     * 查询桌次的可预订时段
     * Description: <br>
     * Implement: <br>
     * @param queryConditon查询条件
     * @return
     * @see
     * @return QueryResults结果
     * @author ozm2013-3-14下午5:20:50
     */
    @SuppressWarnings("rawtypes")
    List queryBookableTablePeriods(QueryCondition queryConditon);
    
    
    /**
     * 查询出预订预览界面预订时段的所有房间
     * Description: <br>
     * Implement: <br>
     * @param queryConditon 时段表中的索引条件
     * @return
     * @see
     * @return List 被预定时段的的房间
     * @author ozm2013-3-27下午5:42:30
     */
    List<RoomInfo> queryBookingPreviewRoomsByPeriods(QueryCondition queryConditon);
   
    /**
     * 查询订单预览界面房间时段信息
     * Description: <br>
     * Implement: <br>
     * @param queryConditon 查询条件
     * @return
     * @see
     * @return List 房间时段信息集合
     * @author ozm2013-3-27下午6:18:08
     */
    @SuppressWarnings("rawtypes")
    List queryBookingPreviewRoomPeriodsByIds(QueryCondition queryConditon);
    
    /**
     * 查询订单预览界面桌次信息
     * Description: <br>
     * Implement: <br>
     * @param queryConditon 查询条件
     * @return
     * @see
     * @return List 桌次信息集合
     * @author ozm2013-3-27下午6:18:08
     */
    List<TableNoInfo> queryBookingPreviewTableNosByPeriods(QueryCondition queryConditon);
    
    /**
     * 查询订单预览界面桌次时段信息
     * Description: <br>
     * Implement: <br>
     * @param queryConditon 查询条件
     * @return
     * @see
     * @return List 桌次时段集合
     * @author ozm2013-3-27下午6:18:08
     */
    @SuppressWarnings("rawtypes")
    List queryBookingPreviewTablePeriodsByIds(QueryCondition queryConditon);
    
    /**
     * 查询订单预览时间段信息
     * Description: <br>
     * Implement: <br>
     * @return
     * @see
     * @return List
     * @author ozm2013-3-30下午11:59:12
     */
    @SuppressWarnings("rawtypes")
    List queryPreviewPeriods(QueryCondition queryConditon);
    
    /**
     * 通过索引查询房间时段或者桌次时段
     * Description: <br>
     * Implement: <br>
     * @param idList 时段索引
     *  @param type 时段类型 
     * @return
     * @see
     * @return List
     * @author ozm2013-4-1下午2:28:13
     */
    @SuppressWarnings("rawtypes")
    List queryPeriodsByIdList(List idList,int type);
    
    /**
     * 通过订单索引获取订单预订的房间记录
     * Description: <br>
     * Implement: <br>
     * @param orderId  订单ID
     * @return
     * @see
     * @return List 结果集
     * @author ozm2013-4-7下午4:12:13
     */
    List<?> queryOrderRoomsByOrderId(Integer orderId);
    
    /**
     * 通过订单索引获取订单预订的时间列表
     * Description: <br>
     * Implement: <br>
     * @param orderId  订单ID
     * @param roomId   房间ID
     * @return
     * @see
     * @return List 结果皆
     * @author ozm2013-4-7下午4:26:25
     */
    List<?> queryRoomPeriodByOrderIdAndRoomId(Integer orderId,Integer roomId);
    
    /**
     * 通过房间ID获取房间信息
     * Description: <br>
     * Implement: <br>
     * @param roomId 房间ID
     * @return
     * @see
     * @return RoomInfo 房间信息
     * @author ozm2013-4-11下午3:02:45
     */
    RoomInfo findOneRoomInfoById(Integer roomId);
    
   /**
    * 通过起止时间和房间信息查询时段信息
    * Description: <br>
    * Implement: <br>
    * @param startTime 起始时间
    * @param endTime  结束时间
    * @param roomId   房间ID
    * @return
    * @see
    * @return List<?> 时段信息
    * @author ozm2013-4-11下午5:50:16
    */
    List<?> queryPeriodsByRoomIdAndStartTimeAndEndTime(Object startTime,Object endTime ,Object roomId);
    
    /**
     * 通过索引列表和订单ID获取房间时段记录
     * Description: <br>
     * Implement: <br>
     * @param orderId 订单索引
     * @param innerIndexs 房间时段索引集合
     * @return
     * @see
     * @return List<?> 结果集合
     * @author ozm2013-4-12下午5:53:42
     */
    List<?> queryRoomPeriodsInIdListByOrderId(Integer orderId,Integer[] innerIndexs);
    
    /**
     * 通过索引列表和订单ID获取被取消的房间时段记录
     * Description: <br>
     * Implement: <br>
     * @param orderId 订单索引
     * @param innerIndexs 房间时段索引集合
     * @return
     * @see
     * @return List<?> 结果集
     * @author ozm2013-4-12下午5:54:55
     */
    List<?> queryRoomPeriodsNotInIdListByOrderId(Integer orderId,Integer[] innerIndexs);
}
